1. Technical Field
The present invention relates to computers, computer hardware, and computer software. More particularly, the present invention relates to a system and method for providing a secure hardware personalization service.
2. Description of Related Art
As personal computing becomes more data-intensive in a security conscious environment, traditional means of assuring data integrity and security are proving inadequate. Antivirus scans may take all night, disk integrity checks may take most of a day and the encryption of large blocks of data can take more than a day. Indexing and search of large volumes of data is already computationally burdensome and is likely to get more so as search extends to visual and audible media. This trend is exacerbated by increasing disk sizes, driven in turn by diverse media. At the same time, viruses, trojans, and denial-of-service attacks are increasing in frequency and sophistication. High-volume Web servers are already turning to specialized hardware (e.g., SSL accelerators) to handle this problem, but the personal computing environment is too price-sensitive and too diverse in usage models to find single-purpose solutions acceptable.
One method of addressing the problem is through the use of reconfigurable hardware. Reconfigurable hardware is hardware capable of being provided with different personalities at different times. A personality defines the function of the reconfigurable hardware, which may include anti-virus scanning, indexing, encryption, decryption, and search orders. Because reconfigurable hardware is provided as a separate component in a system and is dedicated to a particular task, reconfigurable hardware is often capable of performing these functions orders of magnitude faster than if the computer had to use its own resources to perform these functions. Reconfigurable hardware can also perform some functions transparently. Thus, reconfigurable hardware associated with a hard disk controller can leverage the always-reading property of hard disks to process their contents without any overhead to file access. (Reconfigurable hardware will be primarily associated with I/O paths and specific data-intensive devices.) When the reconfigurable hardware has completed a task, a new personality can be provided to the hardware to perform a new task.
Reconfigurable hardware in a computer or server allows the dynamic instantiation of function through loading of personality into the hardware. That function, being hardware-based, can be orders of magnitude faster than the same function implemented as a program.
Reconfigurable hardware typically consists of integrated circuits, each of which contains many thousands of logic elements, with a general interconnection scheme. A specific personality or logical functionality can be stored in interconnection switches with memory. These memory switches determine which logic element inputs are connected to which logic element outputs. Many complex logical functions can be realized by setting the memory of the various interconnection switches. These functions include, but are not limited to arithmetic functions, storage functions, and sequencing functions. Such integrated circuits are known as field-programmable gate arrays, or FPGAs. Examples of these FPGAs are manufactured by the Xilinx Corporation of San Jose, Calif., who, in 2003, announced their plans to make available such circuits with over a billion transistors on a single chip. Another example may be seen in a plug-in card designed by Derivation Systems, of Carlsbad Calif. The plug-in card contains FPGAs in an industry-standard form factor. Such cards are an example of how FPGAs can be packaged for inclusion in a personal computer or server. Derivation Systems has computed personality for this card that allows it to function as a high-speed encryption processor, and a second personality that executes Java™ bytecodes directly in hardware and at high speed. These are examples of high-level system functions that can be valuable to a PC or server, and can be created dynamically by loading a personality into one or more FPGAs. The use of FPGAs in this manner is referred to as “reconfigurable hardware.”
The programming of an FPGA requires a specification of the desired logic function of the personalized chip together with knowledge of the specific capacity, performance and organization of the chip. Given this knowledge, a design program can compute the values of each bit to be stored in each of the memory switches of the chip. This design program is extremely complex, often specific to the products of a single chip manufacturer, and may require significant processing, memory, and storage resources to run. Likewise, the determination of the desired logic function of the personalized chip may also be complex and time-consuming, and may require the services of a skilled human designer. These considerations have limited FPGA use to specific products whose price or volume justifies the expenditure necessary to determine the specific personality of the chip. Accordingly, the sequence of bits that represents the personality becomes a significant asset of the company whose product contains the chip.
The most efficient way to change the personality of reconfigurable hardware is via a network connection (such as over the Internet). A service provider merely has to provide the reconfigurable hardware with a new personality. However, because the personality represents a significant investment to the service provider, methods and devices are needed to provide a very high level of security to prevent piracy. The problem is analogous to, but distinct from, the problem of digital rights management of entertainment content.